課程資訊
課程名稱
程式設計
Programming Design 
開課學期
112-1 
授課對象
資訊管理學系  
授課教師
何承遠 
課號
IM1003 
課程識別碼
705 10300 
班次
02 
學分
3.0 
全/半年
半年 
必/選修
必修 
上課時間
星期二7,8,9(14:20~17:20) 
上課地點
管一101 
備註
週四ABC實習在小電腦教室,開學前請仔細閱讀課程大綱並依指示收看課程影片。
限外系(所)學生
總人數上限:70人
外系人數限制:70人 
 
課程簡介影片
 
核心能力關聯
核心能力與課程規劃關聯圖
課程大綱
為確保您我的權利,請尊重智慧財產權及不得非法影印
課程概述

2023.09.05 更新:

想申請加選或旁聽,請在期限前(2023/9/6 23:59:59)填此表單:https://docs.google.com/forms/d/e/1FAIpQLSehpMpXMwL4rbkQBSIHB9sx0kSc-1gpdAy2oMmoxQEzgoI6ow/viewform。

2023.08.27 更新:

課程說明影片(https://www.youtube.com/playlist?list=PLMHSr8fseBzXudL_b_jI3_pyOsGTKK87p),請想修課的同學務必在仔細閱讀下方資訊和課程大綱(連結在下面)之餘,也務必仔細觀看課程說明影片,以免錯過重要資訊。

2023.08.10 更新:

(一)課程重要資訊:

112-1 課程大綱在 https://www.dropbox.com/scl/fi/3k0b517m4ohv74b0ei9r7/PD112-1_syllabus230809.pdf?rlkey=70mdfz1ip77i7akt2wduojzy2&dl=0,請考慮修課的同學們務必仔細閱讀,以免錯過重要的課程規定。

這門課是設計給資管系大一同學的,並不假設修課同學有程式設計基礎,但它還是有它需要的難度和負擔,我希望(也相信)這是校內的入門級程式設計課程中數一數二困難且會帶來沉重負擔的(課程使用的程式語言 C++ 本身也就有不低的學習門檻)。如果真的沒有基礎,請把這門課想成至少六學分,並且務必少修一些課、預留足夠多的時間給這門課。

有鑑於此,如果是想學習基本程式設計,但自覺未來應該不會當軟體工程師的同學,建議修「商管程式設計」、「Python 程式設計基礎課程」或類似課程。如果修過這些課想要繼續進修,相較於再修一門程式設計,更建議修資料結構和(或)演算法。當然如果你確實知道自己為什麼需要這門課,只要有位子,都還是很歡迎的。

由於想修這門課的學生近年來愈來愈多,為了照顧想修課的同學並且兼顧課程品質,從 111-1 起,本課程一次開設兩班,「01 班」由孔令傑老師負責,「02 班」則由何承遠老師負責。兩班共享一模一樣的課程進度、課程影片(孔令傑老師錄的)、作業考試專案的題目、助教課、助教;不共享的學習活動,基本上只有正課時間的課堂練習和課堂補充,會由兩位老師各自帶領。

本課程所有的課程講義與影片,以及部分過往作業,都在 http://www.im.ntu.edu.tw/~lckung/course_web/#/course/Programming%20Design/introduction,歡迎大家自行取用、用以瞭解本課程,甚至在學期開始前預習。本學期的影片、講義、作業、考試、補充資料等等,會在課堂中使用 NTU COOL 提供給大家。

(二)選課須知:

因為課程內容、進度、要求、評分方式都幾乎一模一樣,所以修哪一班也幾乎沒有差別。為了方便分流,資管系(含雙主修資管系)請修 01 班,非資管系則請修 02 班。112-1 預計兩班合計收最多 180 名學生,網路初選兩班各 70 個名額。非臺大學生(包含交換生、外校生、三校聯盟等)網路初選不開放,第二階段或開學後若有剩餘名額即歡迎加選,若沒有剩餘則請大家諒解,把名額保留給最需要的同學。如果你想申請加簽與旁聽,請在開學後第一次上課到教室上課,並在當週三 23:59 前填寫申請表單(網址將於第一天課堂上公布),預計在第二週的週三發放授權碼。旁聽不限名額,申請就有。

加簽方面,表單上會有填寫動機、相關背景的欄位,所以可以不用在學期開始前寫信跟老師們說自己有加簽的企圖。若學生人數實在過多必須取捨,則以有完成作業零和作業一且表現好的優先,其次參考學院、學系、年級、動機、背景等,但沒有一定哪個學院優先、哪個年級優先等等,都是到時候綜合決定。

(三)學期開始前的自主學習:

如課程大綱(連結在上面)所述,授課團隊在過去 11 年間,每一年都得到來自同學們一樣的回饋:課程前半段步調太緩,後半段則步調太快。這雖然是很主觀的感受,但客觀來看也合理,畢竟絕大部分課程都是後面困難前面相對簡單,這門課也不例外,而 C++ 中關於物件導向的部分對初學者來說也特別難掌握。此外,同學們也持續反應課程任務(作業、專案)太多、學期後半的學習活動(例如期末專案)和學期後半的課程內容關聯性太小等等。因此在本學期(112-1)中,我們做如下重大調整:

(1) 期末專案規模縮小,不要求也不鼓勵同學們自學並製作圖形介面;

(2) 期中專案規模縮小,變成一份作業,從團隊做三週變成個人做一週;

(3) 新增期末考,測驗學期後半段內容;

(4) 將過往學期中最初兩週的內容(共三個講次,講次 1 到 3,Introduction、Selection and Repetition、Computer Systems)交由學生們自主學習,本學期的第一週(9 月 5 日)進行的就是過往第三週的課程。授課團隊將提供課程影片、練習題、練習題解答等相關學習素材給學生們。課程講義與影片在前面的連結中有;練習題在 PDOGS(https://pdogs.ntu.im/)上,而 PDOGS 的使用說明可以參考 https://www.youtube.com/watch?v=MP1oxBizCwI。如果您想在開學前獲得不定時的提醒及相關資訊,可以在 https://docs.google.com/forms/d/e/1FAIpQLScHsHlqu_rS88NG9Dq3grfSAEJ_oc4etWNQc4nJo5Nq4PaPTQ/viewform 留下您的 e-mail。最後,如課程大綱所述,這門課程以翻轉教室的方式進行,所以在開學第一次上課進教室前,同學們也應該先看完講次 4 的 Variables and Arrays 影片,以便課堂上可以做練習、聽延伸說明。

*關於要求開學前先自主學習是否不近人情,我們是這麼想的:(A) 若能藉此讓學生們在學期中不要爆炸,把相對容易、自己學得會的部分透過自學來完成,應該對同學們是利大於弊。(B) 到 Arrays 之前的內容,通常是一般高中以及大學的入門程式設計課會涵蓋的內容,大部分同學要自學應該辦得到。(C) 如果自學前 Array 前的內容就覺得極為困難,建議還是先去修比較適合自己的程式設計課程。(D) 當然有些同學可能不幸沒接收到這個資訊,沒有在學期開始前先自學。就這點來說,我們的想法是:修一門課的學生,照理說在選課前是應該注意透過官方管道公告的課程規定,我們也會透過各種方法通知即將進入資管系的新生;若還是有同學沒留意到且仍然想要修課,也還是可以在開學第一週自行多花時間跟上課程進度,也不會傷害到成績。(E) 資管系還是有部分新生過往沒有相關的程式設計學習經驗,因此我們會在開學前提供 office hour 給這些同學們一些額外的協助;對於非資管系的同學們,由於並非必須修這門課,且我們能量有限,因此只會在開學後一視同仁地提供 office hour,請大家見諒。(F) 總之,我們盡力把課程規劃成對同學們最好的形式,但還是不可能滿足所有不同學生的要求,只能請大家多多幫忙、配合了。

(四)其他問題:

如果還有問題,可以寫信到 b09705045@ntu.edu.tw 請教這學期的大助教吳宇璇,若有大助教無法回答的問題,他會再問兩位老師後給予答覆。 

課程目標
請見課程大綱 
課程要求
請見課程大綱 
預期每週課後學習時數
 
Office Hours
 
指定閱讀
 
參考書目
請見課程大綱 
評量方式
(僅供參考)
   
針對學生困難提供學生調整方式
 
上課形式
提供學生彈性出席課程方式
作業繳交方式
學生與授課老師協議改以其他形式呈現
考試形式
其他
由師生雙方議定
課程進度
週次
日期
單元主題
無資料